<?

include ('../modelo/utils.php');
include ('../modelo/canchas.php');
include ('../modelo/clientes.php');

class Estado{
    var $id_estado;
    var $nom_estado;
    var $desc_estado;
    
    function __construct($id_estado=0,$nom_estado='',$desc_estado=''){
        $this->id_estado=$id_estado;
        $this->nom_estado=$nom_estado;
        $this->desc_estado=$desc_estado;
    }

    function asignar_estado($id_estado,$nom_estado,$desc_estado){
        $this->id_estado=$id_estado;
        $this->nom_estado=$nom_estado;
        $this->desc_estado=$desc_estado;
    }
    
    function anti_inyection(){
        $this->id_estado=sql_quote($this->id_estado);
        $this->nom_estado=sql_quote($this->nom_estado);
        $this->desc_estado=sql_quote($this->desc_estado);
    }
        
    function get_estado($con, $id_estado){
        $this->anti_inyection();
        $strselect="SELECT * FROM estados_reserva WHERE". 
                    " id_estado=$id_estado;";
        $res = mysql_query($strselect, $con) or die (mysql_error());
        $this->asignar_estado(mysql_result($res, 0, "id_estado"),
        mysql_result($res, 0, "nom_estado"),
        mysql_result($res, 0, "desc_estado"));
    }
    
    function select_estados($con){
        $strselect="SELECT * FROM estados_reserva;";
        $resultado = mysql_query($strselect,$con);
        return $resultado;
    }	
}

class Reserva {

    var $num_reserva;
    var $stamp;
    var $fecha_reserva;
    var $estado;
    var $loginname;//cambio  $id_usuario
    var $id_cancha;
    var $id_cliente;  //SIRVE SI EL ALTA LA DA UN USUARIO QUE NO ES EL CLIENTE. POR EJEMPLO SI SE RECIBE LA RESEVA POR TELEFONO
    var $comentario;


    function anti_inyection(){
        $this->num_reserva=sql_quote($this->num_reserva);
        $this->stamp=sql_quote($this->stamp);
        $this->fecha_reserva=sql_quote($this->fecha_reserva);
        $this->estado=sql_quote($this->estado);
        $this->loginname=sql_quote($this->loginname);
        $this->id_cancha=sql_quote($this->id_cancha);
        $this->id_cliente=sql_quote($this->id_cliente);
        $this->comentario=sql_quote($this->comentario);
     }


    
    function __construct($num_reserva=0,$stamp=0,$fecha_reserva=0,$estado='',$loginname=0,$id_cancha=0,$id_cliente=0,$comentario='') {
        $this->num_reserva=$num_reserva;
        $this->stamp=$stamp;
        $this->fecha_reserva=$fecha_reserva;
        $this->estado=$estado;
        $this->loginname=$loginname;
        $this->id_cancha=$id_cancha;
        $this->id_cliente=$id_cliente;
        $this->comentario=$comentario;
        $this->anti_inyection();
    }

	function select_reservas($con){
            $strselect="SELECT * FROM reservas;";
            $resultado = mysql_query($strselect,$con);
            return $resultado;
	}	
	function select_reservasxfecha($con){
            $this->anti_inyection();
            $strselect="SELECT * FROM reservas where fecha_reserva='$this->fecha_reserva'";
            $resultado = mysql_query($strselect,$con);
            return $resultado;
	}
	function select_ultima_reserva($con){
            $strselect="SELECT max(num_reserva) as num FROM reservas;";
            $resultado = mysql_query($strselect,$con);
            $ult=mysql_fetch_object($resultado);
            return $ult->num;
	}
	function select_reservaxnumero($con){
            $this->anti_inyection();
            $strselect="SELECT * FROM reservas WHERE num_reserva= '$this->num_reserva';";
            $resultado = mysql_query($strselect,$con);
            return $resultado;
	}
	function modificar_reserva($con){
            $this->anti_inyection();
            $strupdate="UPDATE reservas SET stamp= '$this->stamp',fecha_reserva='$this->fecha_reserva',estado='$this->estado',loginname='$this->loginname',id_cancha='$this->id_cancha',id_cliente='$this->id_cliente',comentario='$this->comentario' WHERE num_reserva='$this->num_reserva';";
            mysql_query($strupdate,$con) or die (mysql_error());
	}
/*	function modificar_cabezal($con){
	$this->anti_inyection();
		$strupdate="UPDATE pedidos SET fecha_pedidos= '$this->fecha_pedidos',fecha_entrega='$this->fecha_entrega',estado='$this->estado',calle='$this->calle',numero='$this->numero',apto='$this->apto',comentario='$this->comentario' WHERE num_pedidos='$this->num_pedidos';";
		mysql_query($strupdate,$con) or die (mysql_error());
	}
*/
	function eliminar_reserva($con){
            $this->anti_inyection();
            $strdelete="delete  from reserva where num_reserva='$this->num_reserva';";
            mysql_query($strdelete,$con) or die (mysql_error());
	}
	function insertar_reserva($con){
            $this->anti_inyection();
            $strinsert="insert into reservas values('$this->num_pedidos','$this->stamp','$this->fecha_reserva','$this->estado','$this->loginname','$this->id_cancha','$this->id_cliente','$this->comentario');";
            mysql_query($strinsert,$con) or die (mysql_error());				
	}
	function seleccion_reservasxusuario($con){
            $this->anti_inyection();
            $strselect="SELECT * FROM reservas WHERE loginname='$this->loginname';";
            $resultado = mysql_query($strselect,$con);
            return $resultado;
	}
	function asignar_reserva($num_reserva,$stamp,$fecha_reserva,$estado,$loginname,$id_cancha,$id_cliente,$comentario) {
            $this->num_reserva=$num_reserva;
            $this->stamp=$stamp;
            $this->fecha_reserva=$fecha_reserva;
            $this->estado=$estado->nom_estado;
            $this->loginname=$loginname;
            $this->id_cancha=$id_cancha;
            $this->id_cliente=$id_cliente;
            $this->comentario=$comentario;
            $this->anti_inyection();
	}
	
	function select_reservasxfechaxtipo($con, $fecha, $tipo){
            $resultado = array();
            for ($h = 9; $h <= 23; $h++) {
                $unaCancha=new Cancha();
                $lasCanchas=$unaCancha->select_canchaXtipo($con, $tipo);
                while ($cancha = mysql_fetch_array($lasCanchas)){
                    $hora=$h.':00';
                    $fecha_reserva = get_datetime($fecha,$hora);
                        if ($unaCancha->is_Disponible($con, $cancha['id_cancha'], $fecha_reserva)){
                                $cli = new Cliente();
                                $cli->loginname=$_SESSION['usuario'];
                                $cliente = $cli->select_clientexloginname($con);
                                $reserva = new Reserva(null,null,$fecha_reserva,'DISPONIBLE', $cli->loginname, $cancha['id_cancha'], $cliente['id_cliente'], '');
                        }else{                                            
                            $reserva = new Reserva();
                            $reserva->get_reservaXFechaYCancha($con, $cancha['id_cancha'], $fecha_reserva);
                        }
                        $resultado[]=$reserva;
                }
             }
            return $resultado;
	}

    function get_reservaXFechaYCancha($con, $id_cancha, $fecha_reserva){
            $this->anti_inyection();
            $strselect="SELECT * FROM reservas WHERE". 
                        " DATE_FORMAT(fecha_reserva,  '".FORMATO_FECHA_SQL."')='$fecha_reserva'".
                        " and id_cancha=$id_cancha";
            $res = mysql_query($strselect, $con) or die (mysql_error());
            
            $estado=new Estado();
            $id_estado = mysql_result($res, 0, "estado");
            $estado->get_estado($con, $id_estado);
            
            $this->asignar_reserva(mysql_result($res, 0, "num_reserva"),
                    mysql_result($res, 0, "stamp"),
                    mysql_result($res, 0, "fecha_reserva"),
                    $estado,
                    mysql_result($res, 0, "loginname"),
                    mysql_result($res, 0, "id_cancha"),
                    mysql_result($res, 0, "id_cliente"),	 
                    mysql_result($res, 0, "comentario"));		 
    }
	

}
?>

